// js 中 instansof 运算符用于判断构造函数的prototype属性是否出现
// 在对象的原型链中的任何位置
// 对象的__proto__ 与 构造函数的prototype是等价的  
/**
 * 手写 instanceof
 * @param {Object} left : ;
 * @param {*} right 
 * @return boolean
 */
 function myInstanceof(l,r) {
    let lpro = l.__proto__;
    const rpro = r.prototype;
    while (true) {
      if(lpro===null){
          return  false;
      }
     if(lpro ===rpro){
      return true;
     }
     lpro= lpro.__proto__;
    }
  }

// 测试
console.log(new String('11') instanceof String)
console.log(myInstanceof(new String('11'),String))  // true
console.log(myInstanceof('11',String)) 
console.log(myInstanceof(Object,Object))
console.log(myInstanceof(Array,Array))